iT邦幫忙

2023 iThome 鐵人賽

DAY 12
1
自我挑戰組

SRE 照書養系列 第 12

Day 12 - SRE 照書養:Borg 淺聊(上)

  • 分享至 

  • xImage
  •  

嗨!週二大家好!今天是 DevOpsDay 的第二天,滿滿兩天的議程收穫豐富!回家後繼續看書寫文章拉!這裡是今天讀的原文出處:The Production Environment at Google, from the Viewpoint of an SRE,那我們就開始吧!

承如昨天提到,Google 並不會將軟體服務放在特定的硬體上,而是使用 Borg 來管理這些硬體設備,那麼究竟什麼是 Borg 呢?

Borg 是 Google 內部的大型集群管理器,負責運行用戶提交的 Job,而這個 Job 又由一個或是多個 Task 所組成。多個機器組成一個 Cell,每個 Job 運行在一個 Cell 當中。

image

根據上圖,我們可以得知 Borg 是一個 server/agent 架構,主要包含 BorgMaster 與 Borglet。

BorgMaster

Borgmaster 由兩個程序組成:

  • 主 BorgMaster程序
  • 一個獨立的調度器。

主程序處理客戶的遠程過程調用 (RPCs),管理所有系統對象的狀態機,並提供 Web UI 來備份到 Sigma。BorgMaster 被複製五次並且保持著大部分的單元狀態。一個由 Paxos 選出的主節點負責所有改變單元狀態的運營。主節點的狀態被稱為 checkpoint,用於記錄狀態並做模擬和調試。此外,BorgMaster 還有一個高真實性的模擬器 Fauxmaster,用於讀取 checkpoint 文件並進行故障調試和容量計劃。

Borglet

Borglet 是每個機器上的本地 Borg 代理,負責任務的啟動、停止和重啟,並管理本地資源。BorgMaster 負責監控和控制 Borglet 和機器的狀態。訊息傳遞通過 BorgMaster 的複製進行分片處理,為了增加韌性,Borglet 會一直上報完整的狀態,而 BorgMaster 則只更新差異的部分。若 Borglet 無法回應 BorgMaster,則該機器被標記為失效,其任務會被重新調度到其它機器,同時殺掉重復的任務。但如果 Borglet 與 BorgMaster 失去聯絡,那麼當前正在運行的任務和服務仍將繼續運行。

什麼是 BNS?

由於硬體設備跟軟體服務不再是一對一的關係,因此我們就沒辦法像在自家設備上開一個 IP,讓別人透過 IP 來存取某一項指定服務。這時候就需要 BNS(Borg name service)。當其他 Task 連接到某個 Task 時,使用 BNS 名稱建立連接,BNS 系統負責將這個名稱轉換成具體的 IP 地址和端口進行連接。

後記

如果已經有在使用 Kubernetes 的小夥伴應該會覺得非常熟悉,除了 Borg 聲明式的資源使用方式、尋址,還有架構都十分類似。今天看到參考資料的那份 PDF 檔,為之驚艷,明天讓我插個題先研究一下 XD!明天繼續跟 Borg 奮鬥!掰噗!

參考資料


上一篇
Day 11 - SRE 照書養:Google 數據中心
下一篇
Day 13 - SRE 照書養:Borg 淺聊(中)
系列文
SRE 照書養30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言